Newer
Older
CVSS_3.0_GUI / dist / CVSS_3.0_Calc-1.0.0-linux-x64 / node_modules / nwjs-builder-phoenix / assets / nsis / Contrib / Modern UI 2 / Pages / StartMenu.nsh
root on 7 May 2019 7 KB Initial commit
  1. /*
  2.  
  3. NSIS Modern User Interface
  4. Start Menu folder page
  5.  
  6. */
  7.  
  8. ;--------------------------------
  9. ;Page interface settings and variables
  10.  
  11. !macro MUI_STARTMENUPAGE_INTERFACE
  12.  
  13. !ifndef MUI_STARTMENUPAGE_INTERFACE
  14. !define MUI_STARTMENUPAGE_INTERFACE
  15. Var mui.StartMenuPage
  16. Var mui.StartMenuPage.Location
  17. Var mui.StartMenuPage.FolderList
  18.  
  19. Var mui.StartMenuPage.Temp
  20. !endif
  21.  
  22. !ifdef MUI_STARTMENUPAGE_REGISTRY_ROOT & MUI_STARTMENUPAGE_REGISTRY_KEY & MUI_STARTMENUPAGE_REGISTRY_VALUENAME
  23. !ifndef MUI_STARTMENUPAGE_REGISTRY_VARIABLES
  24. !define MUI_STARTMENUPAGE_REGISTRY_VARIABLES
  25. Var mui.StartMenuPage.RegistryLocation
  26. !endif
  27. !endif
  28.  
  29. !macroend
  30.  
  31.  
  32. ;--------------------------------
  33. ;Page declaration
  34.  
  35. !macro MUI_PAGEDECLARATION_STARTMENU ID VAR
  36.  
  37. !insertmacro MUI_SET MUI_${MUI_PAGE_UNINSTALLER_PREFIX}STARTMENUPAGE ""
  38. !insertmacro MUI_STARTMENUPAGE_INTERFACE
  39.  
  40. !insertmacro MUI_DEFAULT MUI_STARTMENUPAGE_DEFAULTFOLDER "$(^Name)"
  41. !insertmacro MUI_DEFAULT MUI_STARTMENUPAGE_TEXT_TOP "$(MUI_${MUI_PAGE_UNINSTALLER_PREFIX}INNERTEXT_STARTMENU_TOP)"
  42. !insertmacro MUI_DEFAULT MUI_STARTMENUPAGE_TEXT_CHECKBOX "$(MUI_${MUI_PAGE_UNINSTALLER_PREFIX}INNERTEXT_STARTMENU_CHECKBOX)"
  43.  
  44. !define MUI_STARTMENUPAGE_VARIABLE "${VAR}"
  45. !define "MUI_STARTMENUPAGE_${ID}_VARIABLE" "${MUI_STARTMENUPAGE_VARIABLE}"
  46. !define "MUI_STARTMENUPAGE_${ID}_DEFAULTFOLDER" "${MUI_STARTMENUPAGE_DEFAULTFOLDER}"
  47. !ifdef MUI_STARTMENUPAGE_REGISTRY_ROOT
  48. !define "MUI_STARTMENUPAGE_${ID}_REGISTRY_ROOT" "${MUI_STARTMENUPAGE_REGISTRY_ROOT}"
  49. !endif
  50. !ifdef MUI_STARTMENUPAGE_REGISTRY_KEY
  51. !define "MUI_STARTMENUPAGE_${ID}_REGISTRY_KEY" "${MUI_STARTMENUPAGE_REGISTRY_KEY}"
  52. !endif
  53. !ifdef MUI_STARTMENUPAGE_REGISTRY_VALUENAME
  54. !define "MUI_STARTMENUPAGE_${ID}_REGISTRY_VALUENAME" "${MUI_STARTMENUPAGE_REGISTRY_VALUENAME}"
  55. !endif
  56.  
  57. PageEx ${MUI_PAGE_UNINSTALLER_FUNCPREFIX}custom
  58.  
  59. PageCallbacks ${MUI_PAGE_UNINSTALLER_FUNCPREFIX}mui.StartmenuPre_${MUI_UNIQUEID} ${MUI_PAGE_UNINSTALLER_FUNCPREFIX}mui.StartmenuLeave_${MUI_UNIQUEID}
  60.  
  61. Caption " "
  62.  
  63. PageExEnd
  64.  
  65. !insertmacro MUI_FUNCTION_STARTMENUPAGE ${MUI_PAGE_UNINSTALLER_FUNCPREFIX}mui.StartmenuPre_${MUI_UNIQUEID} ${MUI_PAGE_UNINSTALLER_FUNCPREFIX}mui.StartmenuLeave_${MUI_UNIQUEID}
  66.  
  67. !undef MUI_STARTMENUPAGE_VARIABLE
  68. !undef MUI_STARTMENUPAGE_TEXT_TOP
  69. !undef MUI_STARTMENUPAGE_TEXT_CHECKBOX
  70. !undef MUI_STARTMENUPAGE_DEFAULTFOLDER
  71. !insertmacro MUI_UNSET MUI_STARTMENUPAGE_NODISABLE
  72. !insertmacro MUI_UNSET MUI_STARTMENUPAGE_REGISTRY_ROOT
  73. !insertmacro MUI_UNSET MUI_STARTMENUPAGE_REGISTRY_KEY
  74. !insertmacro MUI_UNSET MUI_STARTMENUPAGE_REGISTRY_VALUENAME
  75.  
  76. !macroend
  77.  
  78. !macro MUI_PAGE_STARTMENU ID VAR
  79.  
  80. !verbose push
  81. !verbose ${MUI_VERBOSE}
  82.  
  83. !insertmacro MUI_PAGE_INIT
  84. !insertmacro MUI_PAGEDECLARATION_STARTMENU "${ID}" "${VAR}"
  85.  
  86. !verbose pop
  87.  
  88. !macroend
  89.  
  90. ;--------------------------------
  91. ;Page functions
  92.  
  93. !macro MUI_FUNCTION_STARTMENUPAGE PRE LEAVE
  94.  
  95. Function "${PRE}"
  96.  
  97. !insertmacro MUI_PAGE_FUNCTION_CUSTOM PRE
  98.  
  99. !ifdef MUI_STARTMENUPAGE_REGISTRY_ROOT & MUI_STARTMENUPAGE_REGISTRY_KEY & MUI_STARTMENUPAGE_REGISTRY_VALUENAME
  100. ;Get Start Menu location from registry
  101.  
  102. ${if} "${MUI_STARTMENUPAGE_VARIABLE}" == ""
  103.  
  104. ReadRegStr $mui.StartMenuPage.RegistryLocation "${MUI_STARTMENUPAGE_REGISTRY_ROOT}" "${MUI_STARTMENUPAGE_REGISTRY_KEY}" "${MUI_STARTMENUPAGE_REGISTRY_VALUENAME}"
  105. ${if} $mui.StartMenuPage.RegistryLocation != ""
  106. StrCpy "${MUI_STARTMENUPAGE_VARIABLE}" $mui.StartMenuPage.RegistryLocation
  107. ${endif}
  108.  
  109. ClearErrors
  110.  
  111. ${endif}
  112.  
  113. !endif
  114.  
  115. !insertmacro MUI_HEADER_TEXT_PAGE $(MUI_TEXT_STARTMENU_TITLE) $(MUI_TEXT_STARTMENU_SUBTITLE)
  116.  
  117. ${if} $(^RTL) == "0"
  118. !ifndef MUI_STARTMENUPAGE_NODISABLE
  119. StartMenu::Init /noicon /autoadd /text "${MUI_STARTMENUPAGE_TEXT_TOP}" /lastused "${MUI_STARTMENUPAGE_VARIABLE}" /checknoshortcuts "${MUI_STARTMENUPAGE_TEXT_CHECKBOX}" "${MUI_STARTMENUPAGE_DEFAULTFOLDER}"
  120. !else
  121. StartMenu::Init /noicon /autoadd /text "${MUI_STARTMENUPAGE_TEXT_TOP}" /lastused "${MUI_STARTMENUPAGE_VARIABLE}" "${MUI_STARTMENUPAGE_DEFAULTFOLDER}"
  122. !endif
  123. ${else}
  124. !ifndef MUI_STARTMENUPAGE_NODISABLE
  125. StartMenu::Init /rtl /noicon /autoadd /text "${MUI_STARTMENUPAGE_TEXT_TOP}" /lastused "${MUI_STARTMENUPAGE_VARIABLE}" /checknoshortcuts "${MUI_STARTMENUPAGE_TEXT_CHECKBOX}" "${MUI_STARTMENUPAGE_DEFAULTFOLDER}"
  126. !else
  127. StartMenu::Init /rtl /noicon /autoadd /text "${MUI_STARTMENUPAGE_TEXT_TOP}" /lastused "${MUI_STARTMENUPAGE_VARIABLE}" "${MUI_STARTMENUPAGE_DEFAULTFOLDER}"
  128. !endif
  129. ${endif}
  130.  
  131. Pop $mui.StartMenuPage
  132.  
  133. ;Get control handles
  134. GetDlgItem $mui.StartMenuPage.Location $mui.StartMenuPage 1002
  135. GetDlgItem $mui.StartMenuPage.FolderList $mui.StartMenuPage 1004
  136.  
  137. !ifdef MUI_STARTMENUPAGE_BGCOLOR
  138. SetCtlColors $mui.StartMenuPage.Location "" "${MUI_STARTMENUPAGE_BGCOLOR}"
  139. SetCtlColors $mui.StartMenuMenu.FolderList "" "${MUI_STARTMENUPAGE_BGCOLOR}"
  140. !endif
  141.  
  142. !insertmacro MUI_PAGE_FUNCTION_CUSTOM SHOW
  143.  
  144. StartMenu::Show
  145.  
  146. Pop $mui.StartMenuPage.Temp
  147. ${if} $mui.StartMenuPage.Temp == "success"
  148. Pop "${MUI_STARTMENUPAGE_VARIABLE}"
  149. ${endif}
  150.  
  151. FunctionEnd
  152.  
  153. Function "${LEAVE}"
  154.  
  155. !insertmacro MUI_PAGE_FUNCTION_CUSTOM LEAVE
  156.  
  157. FunctionEnd
  158.  
  159. !macroend
  160.  
  161.  
  162. ;--------------------------------
  163. ;Script macros to get Start Menu folder
  164.  
  165. !macro MUI_STARTMENU_GETFOLDER ID VAR
  166.  
  167. !verbose push
  168. !verbose ${MUI_VERBOSE}
  169.  
  170. ;Get Start Menu folder from registry
  171. ;Can be called from the script in the uninstaller
  172.  
  173. !ifdef MUI_STARTMENUPAGE_${ID}_REGISTRY_ROOT & MUI_STARTMENUPAGE_${ID}_REGISTRY_KEY & MUI_STARTMENUPAGE_${ID}_REGISTRY_VALUENAME
  174.  
  175. ReadRegStr $mui.StartMenuPage.RegistryLocation "${MUI_STARTMENUPAGE_${ID}_REGISTRY_ROOT}" "${MUI_STARTMENUPAGE_${ID}_REGISTRY_KEY}" "${MUI_STARTMENUPAGE_${ID}_REGISTRY_VALUENAME}"
  176. ${if} $mui.StartMenuPage.RegistryLocation != ""
  177. StrCpy "${VAR}" $mui.StartMenuPage.RegistryLocation
  178. ${else}
  179. StrCpy "${VAR}" "${MUI_STARTMENUPAGE_${ID}_DEFAULTFOLDER}"
  180. ${endif}
  181.  
  182. !else
  183.  
  184. StrCpy "${VAR}" "${MUI_STARTMENUPAGE_${ID}_DEFAULTFOLDER}"
  185.  
  186. !endif
  187. !verbose pop
  188.  
  189. !macroend
  190.  
  191. !macro MUI_STARTMENU_WRITE_BEGIN ID
  192.  
  193. ;The code in the script to write the shortcuts should be put between the
  194. ;MUI_STARTMENU_WRITE_BEGIN and MUI_STARTMENU_WRITE_END macros
  195.  
  196. !verbose push
  197. !verbose ${MUI_VERBOSE}
  198.  
  199. !define MUI_STARTMENUPAGE_CURRENT_ID "${ID}"
  200.  
  201. StrCpy $mui.StartMenuPage.Temp "${MUI_STARTMENUPAGE_${MUI_STARTMENUPAGE_CURRENT_ID}_VARIABLE}" 1
  202. ;If the folder start with >, the user has chosen not to create a shortcut
  203. ${if} $mui.StartMenuPage.Temp != ">"
  204.  
  205. ${if} "${MUI_STARTMENUPAGE_${MUI_STARTMENUPAGE_CURRENT_ID}_VARIABLE}" == ""
  206. ;Get folder from registry if the variable doesn't contain anything
  207. !insertmacro MUI_STARTMENU_GETFOLDER "${MUI_STARTMENUPAGE_CURRENT_ID}" "${MUI_STARTMENUPAGE_${MUI_STARTMENUPAGE_CURRENT_ID}_VARIABLE}"
  208. ${endif}
  209.  
  210. !verbose pop
  211.  
  212. !macroend
  213.  
  214. !macro MUI_STARTMENU_WRITE_END
  215.  
  216. !verbose push
  217. !verbose ${MUI_VERBOSE}
  218.  
  219. !ifdef MUI_STARTMENUPAGE_${MUI_STARTMENUPAGE_CURRENT_ID}_REGISTRY_ROOT & MUI_STARTMENUPAGE_${MUI_STARTMENUPAGE_CURRENT_ID}_REGISTRY_KEY & MUI_STARTMENUPAGE_${MUI_STARTMENUPAGE_CURRENT_ID}_REGISTRY_VALUENAME
  220. ;Write folder to registry
  221. WriteRegStr "${MUI_STARTMENUPAGE_${MUI_STARTMENUPAGE_CURRENT_ID}_REGISTRY_ROOT}" "${MUI_STARTMENUPAGE_${MUI_STARTMENUPAGE_CURRENT_ID}_REGISTRY_KEY}" "${MUI_STARTMENUPAGE_${MUI_STARTMENUPAGE_CURRENT_ID}_REGISTRY_VALUENAME}" "${MUI_STARTMENUPAGE_${MUI_STARTMENUPAGE_CURRENT_ID}_VARIABLE}"
  222. !endif
  223.  
  224. ${endif}
  225.  
  226. !undef MUI_STARTMENUPAGE_CURRENT_ID
  227.  
  228. !verbose pop
  229.  
  230. !macroend
  231.  
Buy Me A Coffee